Použijte IEnumerable .Where přetížení, které dodává index.
var ovoce = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alphabets = statsname.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Ukradené z Jak získat alternativní prvky pomocí Enumerable v C #
var ovoce = myArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alphabetets = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Pokud jsem vám správně porozuměl, otázka, co chcete, je velmi jednoduchá:
Chcete dát ovoce do řady ovoce a to samé pro abecedy a ty se objevují alternativně v poli statsname, takže:
pro (int i = 0, j = 0; i list = new List () {"apple", "X", "banana", "Y", "Kiwi", "z"};
var result = list.Select ((l, i) => new {l, i})
.GroupBy (p => p.i% 2)
.Select (x => x.Select (v => v.l) .ToList ())
.ToList ();
Pak máte seznam seznamů:
|
list ovoce = nový List ();
list alphabet = new List ();
for (int i = 0; i everyOther (kolekce IEnumerable )
{
using (var e = collection.GetEnumerator ()) {
while (e.MoveNext ()) {
výnos výnosu e.Current;
e.MoveNext (); // přeskočit jeden
}
}
}
Můžete použít System.Linq.Skip k přeskočení prvního prvku.
string [] words = "apple X banana Y Kiwi z" .Split ();
var ovoce = everyOther (slova);
var alphabetets = everyOther (words.Skip (1));
Stačí je použít jako novou kolekci nebo na ně zavolat .ToArray () nebo .ToList ():
foreach (řetězec f v ovoci)
Console.WriteLine (f);
string [] anArray = fruits.ToArray (); // pomocí System.Linq
Nyní máte to, co potřebujete.
Iterátory jsou metody, které poskytují návratnost, viz Iterátory (C # Programovací průvodce). To je velmi silná vlastnost jazyka. Můžeš:
přeskočit prvky
zdobí prvky
změnit pořadí
zřetězit sekvence (viz System.Linq.Concat)
...
|
Zde je nějaký pracovní kód, doufejme, že vám to pomůže:
pomocí systému;
pomocí System.Collections.Generic;
pomocí System.IO;
pomocí System.Linq;
pomocí System.Text;
pomocí System.Threading.Tasks;
jmenný prostor ReadFile
{
třídní program
{
static void ReadFile (string filePath, List custumerNames, List phoneNumbers)
{
string line = string.Empty;
var fileStream = nový StreamReader (filePath);
bool isPhoneNumber = true;
while ((line = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (line));
isPhoneNumber = false;
}
jiný
{
custumerNames.Add (řádek);
isPhoneNumber = true;
}
}
fileStream.Close ();
}
static void Main (řetězec [] args)
{
Console.WriteLine ("Zahájeno čtení souboru ...");
List custumersNamesList = nový List ();
List custumersPhonesNumbers = nový seznam ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Za předpokladu, že oba seznamy mají stejnou délku.
pro (int i = 0; i